package com.itheima.shortLink.util;


import org.mockito.internal.util.StringUtil;
import org.springframework.util.StringUtils;

/**
 * @author Ronaldo
 * @date 2021/7/25
 */
public class UrlUtil {

    private static final int MIN_LENGTH = 10;
    private static final int MAX_LENGTH = 2083;

    public static boolean legitimateUrl(String url){

        //如果为空  返回false  在本项目中  对url的长度有一些规定
        if (StringUtils.isEmpty(url) || url.length() < MIN_LENGTH || url.length() > MAX_LENGTH){
            return false;
        }

        //转换为小写
        url = url.toLowerCase();

        //https、http、ftp、rtsp、mms
        String regex = "^((https|http|ftp|rtsp|mms)?://)"

                + "?(([0-9a-z_!~*‘().&=+$%-]+: )?[0-9a-z_!~*‘().&=+$%-]+@)?" //ftp的user@

                + "(([0-9]{1,3}\\.){3}[0-9]{1,3}" // IP形式的URL- 例如：199.194.52.184

                + "|" // 允许IP和DOMAIN(域名)

                + "([0-9a-z_!~*‘()-]+\\.)*" // 域名- www.

                + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\." // 二级域名

                + "[a-z]{2,6})" // first level domain- .com or .museum

                + "(:[0-9]{1,5})?" // 端口号最大为65535,5位数

                + "((/?)|" // a slash isn‘t required if there is no file name

                + "(/[0-9a-z_!~*‘().;?:@&=+$,%#-]+)+/?)$";

        return  url.matches(regex);

    }
}
